fix: Fix Xcode 26 support for interactive Widgets#391
Conversation
|
To view this pull requests documentation preview, visit the following URL: docs.page/abausg/home_widget~391 Documentation is deployed and generated using docs.page. |
WalkthroughiOS CI and project configuration updated for Xcode 26: CI workflow Xcode version bumped, example app iOS deployment targets raised from 12.0 to 13.0, GPU validation enabled in the Xcode scheme, .gitignore extended for build artifacts, and a CocoaPods user-target xcconfig added to disable Swift explicit modules. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Pre-merge checks❌ Failed checks (1 inconclusive)
✅ Passed checks (4 passed)
📜 Recent review detailsConfiguration used: Repository UI Review profile: CHILL Plan: Pro 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #391 +/- ##
=========================================
Coverage 100.00% 100.00%
=========================================
Files 3 3
Lines 115 115
=========================================
Hits 115 115 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (1)
examples/configurable_widget/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcscheme (1)
62-62: Clarify the necessity of GPU validation mode.The addition of
enableGPUValidationMode = "1"enables Metal GPU frame capture validation, which adds debugging capabilities but introduces performance overhead.This setting is in the shared scheme (xcshareddata), affecting all developers building the example project. The PR objectives focus on fixing Xcode 26 Swift module resolution issues and don't mention GPU validation requirements.
Please clarify:
- Is this change required for Xcode 26 compatibility?
- Is the performance overhead acceptable for an example project's default configuration?
- Should this be an opt-in developer setting rather than committed to the shared scheme?
📜 Review details
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (7)
.github/workflows/build-ios-examples.ymlexamples/configurable_widget/.gitignoreexamples/configurable_widget/ios/Flutter/AppFrameworkInfo.plistexamples/configurable_widget/ios/Podfileexamples/configurable_widget/ios/Runner.xcodeproj/project.pbxprojexamples/configurable_widget/ios/Runner.xcodeproj/xcshareddata/xcschemes/Runner.xcschemepackages/home_widget/ios/home_widget.podspec
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (8)
- GitHub Check: Build iOS Examples (home_widget_example)
- GitHub Check: Build iOS Examples (configurable_widget)
- GitHub Check: Build iOS Examples (lockscreen_widgets)
- GitHub Check: Build Android Examples (home_widget_example)
- GitHub Check: iOS Integration Tests
- GitHub Check: Quality Checks
- GitHub Check: Tests
- GitHub Check: iOS Integration Tests
🔇 Additional comments (7)
examples/configurable_widget/ios/Flutter/AppFrameworkInfo.plist (1)
24-24: LGTM! Deployment target updated correctly.The MinimumOSVersion update to 13.0 aligns with the broader iOS 13 deployment target changes across the project configuration files.
examples/configurable_widget/.gitignore (1)
8-8: LGTM! Standard Swift Package Manager artifacts.The addition of
.build/and.swiftpm/to.gitignorecorrectly excludes Swift Package Manager build artifacts and workspace metadata from version control.Also applies to: 12-12
.github/workflows/build-ios-examples.yml (1)
50-50: No issue detected.Xcode 26.2 is a valid, stable release (released December 12, 2025) and is supported by the
maxim-lobanov/setup-xcode@v1action via SemVer format. The version update is correct.examples/configurable_widget/ios/Podfile (1)
2-2: Note the version mismatch between the iOS platform and package requirement.The
# platform :ios, '13.0'line is the standard Flutter template (intentionally commented for developers to configure). However, the home_widget package itself declaress.platform = :ios, '11.0'in its podspec. If you uncomment the Podfile line, consider using '11.0' to match the package's actual requirement, or verify that iOS 13.0 is intentional for your deployment target.Likely an incorrect or invalid review comment.
examples/configurable_widget/ios/Runner.xcodeproj/project.pbxproj (1)
645-645: LGTM! Deployment target updated consistently across all configurations.The iOS minimum deployment target has been raised from 12.0 to 13.0 across all build configurations (Profile, Debug, and Release), aligning with Xcode 26 compatibility requirements. This change is consistent with similar updates in related iOS configuration files throughout the PR.
Also applies to: 1012-1012, 1063-1063
packages/home_widget/ios/home_widget.podspec (2)
22-25: Core Xcode 26 workaround added.The addition of
user_target_xcconfigto disable explicit Swift modules addresses the "module 'Flutter' not found" errors that occur in Xcode 26 when widget extensions import the home_widget pod. This aligns with the mitigation strategy outlined in issue #370.
21-25: Verify completeness of the Xcode 26 workaround flags.The current implementation applies only
SWIFT_ENABLE_EXPLICIT_MODULES = NOtouser_target_xcconfig. Issue #370 references three flags that should be applied:
SWIFT_USE_INTEGRATED_DRIVER = NOSWIFT_ENABLE_EXPLICIT_MODULES = NO_EXPERIMENTAL_SWIFT_EXPLICIT_MODULES = NOPlease confirm:
- Whether this single-flag approach was validated through testing or if all three flags are necessary
- Whether the additional flags are intentionally omitted or should be added to both
pod_target_xcconfiganduser_target_xcconfig
Description
Add necessary changes to pod spec file to ensure interactive widgets work with Xcode 26
Checklist
exampleor documentation.Breaking Change?
Related Issues
Closes #370
Closes #386